gusucode.com > 阵列信号处理书的源码 > MATALB 程序/16.LCMV波束形成算法MATLAB程序/lcmv_beamform.m

    % LCMV 波束形成的MATLAB仿真程序
% Developed by xiaofei zhang (南京航空航天大学 电子工程系 张小飞)
% EMAIL:zhangxiaofei@nuaa.edu.cn, fei_zxf@163.com

clc; 
close all
clear all; 
M=18;                                     %% the number of antennas
L=100;                                    %% sample number 
thetas=10;                                %信号入射角度 
thetai=[-30 30];                          %干扰入射角度 
n=[0:M-1]';%n 

vs=exp(-j*pi*n*sin(thetas/180*pi));       %信号方向矢量 
vi=exp(-j*pi*n*sin(thetai/180*pi));       %干扰方向矢量 
f=16000;                                  % carrier frequency
t=[0:1:L-1]/200; 
snr=10;                                   %信噪比 
inr=10;                                   %干噪比 
 
xs=sqrt(10^(snr/10))*vs*exp(j*2*pi*f*t);  %构造有用信号 
xi=sqrt(10^(inr/10)/2)*vi*[randn(length(thetai),L)+j*randn(length(thetai),L)];%构造干扰信号
noise=[randn(M,L)+j*randn(M,L)]/sqrt(2); %% noise
%% 
X=xi+noise;                              %% noisly received signal
R=X*X'/L;                                %% construct covariance matrix
wop1=inv(R)*vs/(vs'*inv(R)*vs);          %% beamforming
sita=48*[-1:0.001:1];                    %% 扫描方向范围
v=exp(-j*pi*n*sin(sita/180*pi));         %% 扫描方向矢量 
B=abs(wop1'*v); 
plot(sita,20*log10(B/max(B)),'k'); 
title('波束图');xlabel('角度/degree');ylabel('波束图/dB'); 
grid on 
axis([-48 48 -50 0]); 
hold off